local M = {}

-- 默认配置
local default_config = {
	formatting = {
		enabled = true,
		-- 可以添加更多格式化相关的配置
	},
	diagnostics = {
		enabled = true,
		-- 默认只显示错误级别的诊断
		level = "error", -- 可选: "error", "warning", "all"
		-- 自定义严重性映射，将仓颉等级映射到none-ls等级
		severity_mapping = {
			error = "warning", -- 默认：仓颉error映射为warning显示
			warning = "hint", -- 默认：仓颉warning映射为hint显示
		},
		-- 可以添加更多诊断相关的配置
	},
}

function M.setup(user_config)
	-- 合并用户配置和默认配置
	local config = vim.tbl_deep_extend("force", default_config, user_config or {})

	local null_ls = require("null-ls")
	local sources = {}

	-- 根据配置决定是否添加格式化源
	if config.formatting.enabled then
		local cjfmt_source = require("null-ls-cangjie.sources").get_cjfmt_source()
		table.insert(sources, cjfmt_source)
	end

	-- 根据配置决定是否添加诊断源
	if config.diagnostics.enabled then
		local cjlint_source = require("null-ls-cangjie.sources").get_cjlint_source(
			config.diagnostics.level,
			config.diagnostics.severity_mapping
		)
		table.insert(sources, cjlint_source)
	end

	-- 添加到 null-ls 源
	for _, source in ipairs(sources) do
		null_ls.register(source)
	end

	return config
end

return M
